package top.xiaoazi.futureletterserver.timedtask;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import top.xiaoazi.futureletterserver.module.letter.utils.LetterPushUtils;

@EnableScheduling
@Component
@Slf4j
public class LetterModuleTimedTask  {
    /*
     * cron 表达式的解释：
     * 第一个数字 0：秒。表示在每分钟的第 0 秒触发。
     * 第二个数字 59：分。表示在每小时的第 59 分钟触发。
     * 第三个数字 23：小时。表示在每天的 23 时（即晚上 11 点）触发。
     * 第四个星号 *：日。表示每天。
     * 第五个星号 *：月。表示每个月。
     * 第六个问号 ?：星期。在日期和星期这两个字段中，必须有一个是 ?，因为这两个字段是互斥的。在这里，它表示不指定星期几。
     */
    @Autowired
    private LetterPushUtils letterPushUtils;

    // 每天晚上0:00执行
    @Scheduled(cron = "0 0 0 * * ?")
    public void sendLetter() {
        // 这里的 push 主要作用于每天晚上 0:00:00 分进行抓取当前需要发送的数据
        // 然后将数据进行放入定时器中自动发送信件就可以了
        letterPushUtils.push();
    }
}
